﻿using Metabase;
using Metabase.MetabaseObjects;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace ApplicationGUI
{
    // Класс содержит процедуры для привязки к пунктам главного и контекстного меню
    public static class MetabaseOperations
    {
        // Процедура удаления объекта из контекстного или главного меню
        public static void DeleteObjectItem(MetabaseHandler metabaseHandler, MetabaseObject selectedObject, TreeNode selectedNode)
        {
            if (selectedObject == null) return;
            if ((int)selectedObject.Type_ID == (int)ObjectTypes.otMetabase) // Если это репозиторий - удалим репозиторий после вопроса
            {
                DialogResult dialogResult = MessageBox.Show(AppResources.QuestionMBDropRepository, AppResources.Confirmation, MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                if (dialogResult == DialogResult.Yes)
                {
                    metabaseHandler.DropMetabase();
                    selectedNode.Remove();
                }
            }
            else // Иначе удалим объект после вопроса
            {
                DialogResult dialogResult = MessageBox.Show(AppResources.QuestionMBDeleteObject, AppResources.Confirmation, MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                if (dialogResult == DialogResult.Yes)
                {
                    selectedObject.DeleteObject();
                    selectedNode.Remove();
                }
            }

        }

        // Процедура создания нового объекта из контекстного или главного меню
        public static void CreateObjectItem(MetabaseHandler metabaseHandler, TreeNode selectedNode, ObjectTypes Type_ID)
        {
            if (selectedNode == null) return;
            MetabaseObject newObject = new MetabaseObject { Parent_ID = (selectedNode.Parent.Tag as MetabaseObject).ID, metabaseHandler = metabaseHandler, Object_Name = selectedNode.Text, Type_ID = Type_ID };
            newObject.CreateObject();
            selectedNode.Tag = newObject;
        }

        // Процедура изменения объекта из контекстного или главного меню
        public static void UpdateObjectItem(TreeNode selectedNode)
        {
            if (selectedNode == null) return;
            MetabaseObject curObject = selectedNode.Tag as MetabaseObject;
            curObject.Object_Name = selectedNode.Text;
            curObject.EditObject();
        }
    }
}
